<?php
 require("../model/reqservico.php");
 require '../banco.php';
 require("../model/reqveiculo.php");
 require("../model/reserva.php");
 //require("../StrategyContext.php");
 
 new ControllerReqServico();
 
 class ControllerReqServico{
 
	public function __construct() {
						
			$acao = $_POST['acao'];
			
			if($acao == "incluir") {
				$this->salvaReqServico();
			}
			else if($acao == "incluir_veiculo"){
				$this->salvaReqVeiculo();
			}
			else if($acao == "retornaveiculos"){
				$this->retornaVeiculosOcupados();
			}
			else if($acao == "aprovacao"){
				$this->atualizaStatus();
			}
			else if($acao == "aprovacao_veiculo"){
				$this->atualizaStatusVeiculo();
			}
			else{
				echo "Erro na inclusão do requerimento.";
			}
		}
		
	public function salvaReqServico(){
	
		$p = $_POST;
 
		$servico = new reqservico;
			
		$servico->setSolicitante($p['solicitante']);
		$servico->setMatricula($p['matricula']);
		/*
			Formatei a data em ano, mês e dia porque o banco já estava salvando assim.
			Se eu formatasse no padrão brasileiro, iria ter problema futuramente na conversão,
			já que no banco está o padrão americano e no retorno utilizo funções que traduz 
			para o brasileiro.
		*/
		$data = date("y,m,d");
		$servico->setData($data);
		$servico->setCargo($p['cargo']);
		$servico->setEmail($p['email']);
		$servico->setSetor($p['setor']);
		$servico->setRamal($p['ramal']);
		$servico->setServico($p['servico']);
		$servico->setLocalReparo($p['reparo']);
		$servico->setDescricao($p['descricao']);
		
		
		//$strategyContextC = new StrategyContext('Servico');
		//$strategyContextC->salvarRequerimento($servico);
		
		$banco = new Banco();
			
		$banco->adicionaReqServico($servico);
	}
	
	public function salvaReqVeiculo(){
	
		$p = $_POST;
		
		// novo código
			
			$veiculo = $p['veiculo'];
			$data_ida = $p['data_ida'];
			$hora_ida = $p['hora_partida'];
			$data_hora_partida = $data_ida." ".$hora_ida.":00";
			
			$data_volta = $p['data_volta'];
			$hora_chegada = $p['hora_chegada'];
			$data_hora_volta = $data_volta." ".$hora_chegada.":00";
			
			$pdo = Database::connect();
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			//$sql = "SELECT * FROM reserva r WHERE (veiculo = ?) AND ((r.data_hora_ida BETWEEN ? AND ?) OR (r.data_hora_volta BETWEEN ? AND ?))";
			$sql = "SELECT * FROM reserva r WHERE (veiculo = ?) AND  ((r.data_hora_ida >= ? && r.data_hora_ida < ? && r.data_hora_volta >= ?) OR (r.data_hora_ida >= ? && r.data_hora_volta <= ?) OR (r.data_hora_ida <= ? && r.data_hora_volta >= ?) OR (r.data_hora_ida <= ? && r.data_hora_volta > ? && r.data_hora_volta <= ?)) AND (r.status <> 'negado')";
			$q = $pdo->prepare($sql);
			//$q->execute(array($veiculo, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_volta));
			$q->execute(array($veiculo, $data_hora_partida, $data_hora_volta, $data_hora_volta, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_partida, $data_hora_volta));
			$data = $q->fetchAll(PDO::FETCH_ASSOC);
			Database::disconnect();
			
			if($data != null){
				session_start();
				$_SESSION['dados'] = $data;
				//echo $_SESSION['dados']['veiculo']; TESTE PARA VER SE REALMENTE ESTÁ CAPTURANDO OS DADOS
				header("Location: ../index.php?id_=solicita_veiculo");
				//header("Location: ../formveiculo.php");
			}
			
		// fim novo código
		
	if($data == null){
		$servico = new reqveiculo;
		$servico->setSolicitante($p['solicitante']);
		$servico->setMatricula($p['matricula']);
		/*
			Formatei a data em ano, mês e dia porque o banco já estava salvando assim.
			Se eu formatasse no padrão brasileiro, iria ter problema futuramente na conversão,
			já que no banco está o padrão americano e no retorno utilizo funções que traduz 
			para o brasileiro.
		*/
		$data = date("y,m,d");
		$servico->setData($data);
		$servico->setCargo($p['cargo']);
		$servico->setEmail($p['email']);
		$servico->setSetor($p['setor']);
		$servico->setRamal($p['ramal']);
		$servico->setRoteiro($p['roteiro']);
		$servico->setFinalidade($p['finalidade']);
		$servico->setPassageiros($p['passageiros']);
		
		$reserva = new reserva;
		$reserva->setVeiculo($p['veiculo']);
		$reserva->setDataHoraIda($data_hora_partida);
		$reserva->setDataHoraVolta($data_hora_volta);
		
		$banco = new Banco();
		$banco->adicionaReqVeiculo($servico, $reserva);
		}
	}
	
	public function retornaReqServico($id){
		$idpesquisa = $id;
		$banco = new Banco();
		$banco->retornaReqServico($id);
	}
	
	public function retornaVeiculosOcupados(){
		$p = $_POST;
		
		$data_ida = $p['data_idas'];
		$hora_ida = $p['hora_partida'];
		$data_volta = $p['data_volta'];
		$hora_volta = $p['hora_chegada'];
		
		$data_hora_ida = $data_ida." ".$hora_ida.":00";
		$data_hora_volta = $data_volta." ".$hora_volta.":00";
		
		$banco = new Banco();
		$banco->retornaVeiOcupados($data_hora_ida, $data_hora_volta);
	}
	
	public function atualizaStatus(){
		$p = $_POST;
		$status = $p['status'];
		$justificativa = $p['justificativa'];
		$id = $p['id'];
		
		$banco = new Banco();
		$banco->salvaStatus($status, $justificativa, $id);
	}
	
	public function atualizaStatusVeiculo(){
		$p = $_POST;
		$status = $p['status'];
		$justificativa = $p['justificativa'];
		$id = $p['id'];
		
		$banco = new Banco();
		$banco->salvaStatusVeiculo($status, $justificativa, $id);
	}
 }
?>